Logo UOC

PRA 2

Minería de datos
Autor: Gerard-Josep Alcalde Gascón

1. Introducción

En esta práctica se van a aplicar técnicas de machine learning con el objetivo de generar unos modelos analíticos de los datasets de los que diponemos que sean capaces de aportar una mayor información sobre los tumores de las pacientes en el pecho.

Primero se tratará de generar un modelo no supervisado de clasificación basado en distancias y obtener los resultados de este, que nos servirá como punto de partida para el resto de ejercicios. Además se ha optado por evaluar en este primer punto los distos datasets que se han importado en la PRA1 con la intención de evaluar cual era más adecuado.

A continuación, se cambiará la métrica utilizada en el modelo anterior y se tratará de determinar los efectos de esta en nuestro modelo y que métrica es más apropiada para este caso práctico.

Para finalizar con los modelo no supervisados se generará un modelo con DBSCAN y OPTICS evaluando la importancia de epsilon y minPts en nuestros resultados.

También trataremos con un modelo supervisado de árbol de decisión, evaluando su calidad mediante las curvas ROC y las matrices de confusión. Además se evaluarán también unos modelos con Gradient Tree Boosting y con Random Forest para tratar de evaluar la influencia de un modelo con boosting y de un modelo que genere múltiples árboles de decisión.

A continuación, crearemos un modelo supervisado con k-NN para comparar sus resultados con los de los modelos básados en árboles de decisión.

Finalmente se comentarán las limitaciones del modelo y las consideraciones que hay que tener al utilizarlo.

1.1. Objetivos

Los objetivos de esta práctica son:

1.2. Importación de los datos de la PRA 1

Chunks de la prácitca 1

Importamos el dataset y lo almacenamos como dataframe

Generamos los múltiples dataframes que emplearemos para generar el dataframe definitivo. Además de modificar algunas columnas para una mejor comprensión de los datos.

Generamos unos dataframes ya simplificados de cada una de los 3 tipos de atributos que tenemos.

Generamos un datframe empleando PCA

Dataframe definitivo obtenido del PCA

Finalmente, se han obtenido 7 dataframes que se emplearán con el objetivo de realizar una comparativa de los resultados obtenidos por cada uno de ellos. Por un lado se generan dos datasets con los atributos que han mostrado ofrecer una mayor correlación con el atributo objetivo en el conjunto mean y por otro lado con ambos conjuntos. Por otro lado, se generarán 4 datasets, el que incluya todos los atributos, y el que incluya todos los atributos excepto fractal_dimension, symmetry y smoothness tanto para mean como para worst. Además en los datasets 3-6 también se incluirá el error estándar de radius. Finalmente, se considerará el dataset del PCA. A continuación se detallan estos datasets:

2. Ejercicio 1

2.1. Introducción

En este primer ejercicio se va a aplicar un modelo no supervisado de clustering, en concreto un modelo generado a partir de k-means.

Se ha escogido k-means para este modelo ya que es un modelo que suele funcionar bastante bien en modelos de clasificación y su aplicación y evaluación es sencilla.

K-means al tratarse de un modelo no supervisado basado en distancias requiere que los atributos tengan la misma magnitud o hayan sido previamente normalizados. Los dataframes que emplearemos han sido todos normalizados, excepto df_7, el cual corresponde al PCA y tal y como se ha verificado, todos los atributos tienen un orden muy similar.

En un primer momento se va a trabajar exclusivamente con el dataset df_7 obtenido a partir del PCA y, cuando obtengamos la solución de este evaluaremos los otros datasets para ver si hay alguno que nos proporcione una mayor precisión.

2.2. Aplicación de K-means

A la hora de aplicar K-means debemos empezar por una selección del número de clusters que tendremos. Técnicamente debería haber 2 grupos, los que han sido diagnosticados con un tumor benigno y los que lo han hecho con un tumor maligno. No obstante, podría ser que se generen subgrupos con un mismo diagnóstico, por ejemplo que la mayor precisión se obtenga a con 5 clústers 2 asosciados a un tumor maligno y 3 asociados a un tumor benigno. Por ello, vamos a comprobar primero con que valor de K obtenemos los mejores resultados.

En este modelo la distancia que se va a emplear en el modelo k-means será la euclidea, ya que es la más habitual y suele ser una buena opción, en el siguiente apartado se emplearán otras métricas y con ellas podremos valorar cual funciona mejor con este dataset.

Empezamos almacenando los valores de estudio en la variable X.

A continuación, creamos una función que nos devuelve la predicción de un modelo de kmean empleando la librería pyclustering [1]. La función nos devolverá un dataframe con la predicción de cada observación de la muestra proporcionada además de una puntuación del modelo (suma de las distancias) y el valor promedio de silhouette. De esta forma podemos evaluar el modelo.

Ha sido necesario implementar la librería pyclustering porque scikit learn en su modelo de kmeans no permite modificar la métrica y, por tanto, no habría sido posible realizar el ejercicio 2. Aunque esta librería se podría haber empleado exclusivamente en el ejercicio 2 se ha optado por utilizarlo en ambas y así poder comparar los resultados sobre el mismo algoritmo.

Para una mejor consistencia del código con scikit learn se establecía un valor para random_state, no obstante en pyclustering no se permite establecer el random_state y, por ello, los comentarios de este proyectos pueden no coincidir completamente con lo observado si se ejecuta el código.

A continuación, evaluamos k-means para un rango entre 2 y 10 clusters y evaluamos la calidad de cada modelo aplicando el método elbow.

Parece que se tiene un punto de inflexión entorno a 3 clusters, aunque no es muy pronunciado ya que después se vuelve a obtener la misma pendiente. De esto se concluye que los resultados obtenidos con el método elbow no son concluyentes, aunque esto se puede deber a que el número ideal de clusters sea 2 y, por ello, el modelo ya ha convergido y no obtenemos una variación sustancial de la curva.

No obstante, vamos a evaluar los modelos con silhoutte para sacar unas conclusiones finales.

Tras analizar el resultado de Silhouette se obtiene que a partir de 5 clusters la precisión aumenta considerablemente. Probablemente con 5 clusters obtendremos un resultado más bueno, pero también más complejo de evaluar, por ello finalmente se opta por evaluar el modelo con dos clusters y esta información se tendrá en cuenta para futuros modelos como los basados en densidad del ejercicio 3 de esta práctica.

Además merece la pena mencionar que los valores de silhouette que se obtienen de el modelo son inválidos, por ello se producen huecos en blanco en el gráfico, esto puede ser debido a problemas en la librería ya que no es una librería ampliamente utilizada y, por ello, puede contener errores.

A continuación, generaremos un modelo de k-means con 2 clusters y mostraremos sus resultados con un pairplot para evaluar si se distinguen claramente estos dos grupos y poder identificar que variables tienen una mayor influencia.

Se observa como la variable PC1 si que discretiza bastante bien los pacientes observándose una clara diferencia entre los dos clusters donde se observa que el valor asociado al cluster 1 para PC1 es inferior a la mostrada en las observaciones asignadas al cluster 0. En cuanto al resto de variables se observan unas curvas por lo general más dispersas en el caso del cluster 0, pero por el resto observamos unas distribuciones muy similares.

2.3. Evaluación del dataset más apropiado

En la práctica 1 se presentaron un total de 7 dataframes distintos que se querían evaluar para comprobar cual de ellos aportaba la mayor calidad en los resultados. A continuación se va a evaluar con un total de 2 clústers la puntuación de cada uno de ellos y así podremos determinar para un modelo no supervisado de kmeans, cual obtiene la mejor puntuación.

Silhouette es un parámetro que determina lo bien o mal agrupado que está un conjunto asignando un valor entre -1 y 1, siendo los valores cercanos a 1 los que representan una correcta asignación de los datos y los valores cercanos a -1 que los datos se han asignado a un grupo erroneo.

Según el parámetro de Silhouette se observa que los dataframes 1 y 2 son los que tienen mayor calidad, estos corresponden a los valores radius, concavity y concave_points de los conjuntos de datos mean y worst los cuales se habían escogido a partir de las variables que parecían tener una mayor correlación con la variable objetivo a partir del análisis exploratorio.

Los datasets 3 y 4 incluían los atributos que parecían tener una correlación con la variable objetivo, no solo los que presentaban una mayor correlación. Los cuales se quedan cerca de los resultados de los dataframes 1 y 2, pero son inferiores.

Finalmente, los dataframes 5 y 6 incluían todas las variables con el objetivo de evaluar si un dataset completo podría ayudarnos a conseguir unos resultados mejores a pesar de necesitar un mayor tiempo de cálculo. Por el valor de silhouette encontramos que sus resultados son peores.

Lo sorprendente de este resultado es que dataframe 7, el cual utiliza los datos obtenidos del PCA, con unos componentes que representaban más del 90% de la varianza, y aún así los resultados obtenidos son los de peor calidad basándonos en este parámetro.

Para asegurarnos de estos resultados los vamos a contrastar con el valor de la precisión de los resultados para los distintos datasets. A continuación se genera una función que evalúa la precisión de una predicción, de esta forma nos será más sencillo evaluar la precisión de futuros modelos.

A continuación, evaluamos la precisión de los modelos para cada dataset.

Se observa que el dataframe que nos da la mayor precisión es el dataframe 2 con un 93,6% de precisión muy seguido del dataframe 4. Lo que significa que incorporar los valores de los resultados worst nos ayuda a mejorar la precisión del modelo. Además se observa como emplear el dataframe 2, que solo incluye los datos de los atributos con mayor correlación nos da unos resultados más fiables.

En contrapartida encontramos como el dataframe 7, que incluía los resultados del PCA nos da uno de los peores resultados (un 7% menos de precisión que el dataframe 2), tal y como habíamos visto con Silhouette. Esto puede ser debido a que esas variables tratan de representar la mayor dispersión posible, pero también son la que conllevan una mayor diversidad entre sus datos.

Otro dato que es sorprendente es la precisión del dataframe 1 que resulta ser una de las peores a pesar de tener el mejor valor de silhouette.

Tras realizar estas observaciones se decide continuar el estudio con el dataframe 2.

2.4. Evaluación del modelo con el dataframe 2

Finalmente, se van a evaluar los resultados una vez más con los datos del dataframe 2, ya que se ha observado que es el que nos aporta mayor información. Además al no ser datos extraídos de un PCA nos permitirá darle un sentido físico a los resultados del modelo.

De este scatterplot podemos observar como todas las variables proporcionan una clara diferenciación entre los resultados de tumores malignos y benignos, esto es debido a que este dataset ya había sido escogido entre las variables que ofrecían una mayor correlación con la variable objetivo y por ello se obtienen estos resultados tan claros en los que se observa como los tumores malignos suelen tener una mayor magnitud en todos los atributos.

Para completar este análisis se procede a evaluar que variables nos han generado un mayor número de falsas predicciones sin diferenciar entre falsos positivos o falsos negativos. Para ello generaremos una nueva columna que determine si la predicción ha sido correcta o no y, mostraremos de nuevo un scatterplot que nos permita determinar donde se encuentran los valores mal asignados y poder sacar unas conclusiones de porque ocurre esto.

Con este scatterplot ya se puede determinar que variables nos aportan un mayor número de valores mal asignados esto se hará observando que valores mal asignados se encuentran lejos de los grupos principales.

Se observa que concavity_mean es la variable que muestra más resultados mal asignados al igual que concavity_worst. No obstante, hay que destacar que estos valores son mínimos y que la predicción que obtenemos es muy buena. Además también son los atributos que suelen mostrar una mayor dispersión.

2.4. Conclusiones

En este apartado se han creado múltiples modelos no supervisados de ordenación utilizando el algoritmo k-means.

A partir de estos modelos se ha determinado en un primer momento que el número más apropiado de clusters era 2, lo cual coincide con el número de grupos que tenemos, esto se ha decidido así al no observarse un número claro de clusters ni con el método elbow ni con silhouette. Por ello, sabiendo que el número correcto de clusters era 2, se ha optado por este número.

A continuación, se ha evaluado el modelo empleando el dataframe 7 y se ha obtenido que la variable que aportaba la mayor información a la hora de determinar la asignación a un cluster era la PC1 obtenida a partir de PCA. Esto es lógico ya que al aplicar el PCA cambiamos los ejes de nuestros sistema de referencia con tal de maximizar la dispersión de las variables, y el orden que obtenemos de las variables se asocia a la dispersión que recogen, por ello PC1 es la variable que mayor dispersión recoge y, por tanto, la variable que tiene la mayor influencia a la hora de determinar la clasificación de las variables.

Después se ha decidido evaluar la eficiencia de los distintos datasets que se crearon analizando el valor promedio de silhouette de estos y su precisión. De este análisis se ha obtenido que los mejores resultados de silhouette se obtenían para los dataframes 1 y 2, que contenian los atributos con mayor correlación con la variable objetivo. A continuación, al evaluar la precisión el dataframe 1 no ha dado muy buenos resultados, comparado con el resto, pero si que lo ha hecho el dataframe 2. Por ello se ha determinado escoger el dataframe 2 para realizar un último análisis de los datos y tomarlo como referencia para el resto de apartados.

Del dataframe 2 se ha obtenido que todas las variables tienen una gran correlación con la variable objetivo discretizando de una forma apropiada los datos, tal y como era de esperar dado que ya se buscó este objetivo en el análisis exploratorio.

Finalmente, se ha tratado de analizar más en profundidad que atributos eran los que estaban produciendo un mayor número de predicciones erroneas y se ha encontrado que las variables concavity_mean y concavity_worst eran los causantes de estos, a pesar de ser dos variables que han dado un gran resultado y que se continuarán empleando a continuación.

3. Ejercicio 2

3.1. Introducción

Los métodos no supervisados de clustering como k-means se basan en la distancia entre dos muestras para determinar si deben pertenecer al mismo cluster o no. Es por ello que la forma de medir esta distancia puede ser muy relevante y generar diferencias en los resultados obtenidos. Por lo general se suele utilizar la métrica euclidea, aunque existen otras ampliamente utilizadas como la gausiana o la Manhattan.

En este ejercicio se va a generar un modelo no supervisado de clustering con el algoritmo k-means pero con una metrica distinta a la empleada en el ejercicio anterior que fue la métrica euclidea.

El objetivo del ejercicio será determinar las diferencias que se obtienen con distintas métricas y la influencia que el uso de cada una de ellas tiene.

3.2. Generación del modelo

A partir de la información obtenida en [2] y en [3], se obtiene que las metricas que trae incorporadas pyclustering son (con los números correspondientes para aplicarlas):

Estas métricas se caracterizan por [4]:

La distancia euclidea se obtiene tras realizar la raíz de la suma de las diferencias al cuadrado de las distancias en cada dimensión. Es una de las métricas más utilizadas.

La distancia euclidea cuadrada (squared euclidean), se calcula como la distancia euclidea pero sin realizar la raíz, como resultado obtenemos que esta métrica es más rápida que la distancia euclidea en aplicaciones de clustering.

La distancia Manhattan consiste en sumar la distancia en cada una de las dimensiones. Es una métrica que se computa muy rápidamente.

La distancia Chebyshev consiste en sumar la máxima distancia en cada una de las dimensiones. Es una métrica que dará muy buenos resultados con muestras en las que los resultados son muy similares y tan solo se obtienen pequeñas diferencias entre ellos además es recomendable que la distancia entre dos muestras se observe en cada atributo individualmente y no en el conjunto de total de los atributos, ya que esta diferencia no se captará. Es una métrica muy sensible a los outliers.

La distancia Canberra es una métrica ponderada de la distancia Manhattan.

La distancia Chi-square sirve para obtener la similitud entre dos vectores.

A continuación se va a generar un modelo para cada una de las métricas y a continuación se va a mostrar en un gráfico de barras primero la puntuación de minimos cuadrados, después de silhouette y finalmente la porcentaje de muestras bien asignadas, para cada una de las metricas.

Empezamos creando los modelos.

3.3. Evaluación de la calidad de los distintos modelos

A continuación, vamos a representar mediante un barplot la puntuación del modelo, cabe destacar que esta puntuación corresponde a mínimos cuadrados en el caso de la distancia euclidea, pero con cada distancia varía.

Se observa que las distancis squared euclidean, chebyshev y chi-square son las que muestran mejores resultados basándonos en la puntuación que nos devuelve el modelo. En el lado contrario nos encontramos las métricas Canberra y Manhattan. Como la puntuación que devuelve el modelo no es muy fiable para comparar distintas metricas, ya que varía entre ellas, vamos a evaluar la puntuación de silhouette.

A partir de la puntuación de silhouette se observa que Squared Euclidean obtiene el mejor resultado para silhouette, aunque son muy similares a los obtenidos por las métricas Euclidean, Manhattan y un poco por detrás Chebyshev. La métrica Canberra vuelve a obtener la peor puntuación.

Finalmente, se va a analizar la precisión a la hora de predecir los resultados con cada métrica.

La precisión de todas las métricas es extremadamente elevada, siendo del 91,2% con Canberra, el que ha obtenido los peores resultados y 93,5% en Chi-square, la metrica con los mejores resultados, aunque cuatro de las métricas (Euclidean, Manhattan, Chebyshev y Chi-square) obtienen una diferencia en la precisión de menos de un 1%, por lo que todas proporcionan una precisión muy elevada.

3.4. Comparación de los distintos modelos

En el ejercicio anterior se había empleado la métrica euclidea, ya que suele ser la distancia empleada por defecto en la mayoría de algoritmos de clustering. Hay algunos algoritmos como k-means en la librería scikit learn, el cual emplea exclusivamente la métrica euclidea.

A partir de este análisis se obtiene que la métrica euclidea proporciona unos resultados muy buenos a pesar de no ser la métrica con los mejores resultados para este dataset. Comparado con la métrica euclidea, las métricas Manhattan, Chebyshev y Chi-square nos proporcionan unos resultados con mayor precisión en la predicción.

Era de esperar que squared euclidean tuviese una calidad peor, ya que es una versión simplificada de euclidean para mejorar su velocidad en contra de su calidad. Canberra es otra métrica más sencilla que euclidean por lo que también nos esperábamos estos resultados, aunque no nos esperábamos que fuese peor que la métrica Manhattan, al tratarse de una mejora de esta ponderando los datos.

Chebyshev nos proporciona unos resultados muy buenos, lo cual nos indica que podemos determinar la variable objetivo con el resto de atributos de forma independiente, ya que con esta métrica no se tiene en cuenta el conjunto de las variables sino cada una de ellas de forma independiente.

Chi-square es la métrica que acaba proporcionando los mejores resultados.

3.5. Conclusiones

Tras un análisis de las distintas métricas se obtienen distintas conclusiones de nuestro dataset y de las métricas a emplear.

Primero de todo podemos concluir que la métrica Euclidea empleada en el apartado anterior nos da unos resultados suficientemente buenos, sin tener que entrar en la mayor complejidad que supone emplear métricas alternativas, las cuales solo estarían justificadas si se demostrase una gran mejora en calidad o en tiempos de computación.

A partir de las distintas métricas se ha obtenido que la métrica Euclidea ofrece unos resultados suficientemente buenos tanto en su puntuación general, en la puntuación de silhouette y en la precisión al predecir los resultados. No obstante hay otras métricas como Chebyshev o Chi-square capaces de proporcionar unos resultados de mayor calidad.

A partir de los resultados obtenidos con estas métricas se pueden sacar otras conclusiones de los datos con los que estamos trabajando. Al obtener unos buenos resultados con la métrica Manhattan y Chebyshev deducimos que los distintos diagnósticos se diferencian en cada uno de los atributos y, no tanto, en el conjunto de estos. Esto ya se observaba previamente en los pairplots mostrados en el ejercicio anterior donde se veía que en cada una de las variables se obtenian unos valores de mayor magnitud para los tumores malignos.

4. Ejercicio 3

4.1. Introducción

En este ejercicio aplicaremos un modelo no supervisado de agregación por densidad como es DBSCAN y OPTICS.

Primero emplearemos OPTICS con el objetivo de determinar el número minimo de puntos que debemos considerar, y los valores de epsilon que nos darán una buena predicción.

A continuación, basándonos en los valores obtenidos previamente, aplicaremos un modelo de clasificación con DBSCAN y evaluaremos su calidad.

Finalmente, compararemos los resultados obtenidos con los de los ejercicios anteriores.

4.2. OPTICS

En los ejercicios previos se ha observado que los clusters eran bastante densos y en muchos casos continuos, por lo que deberemos emplear un número mínimo de puntos relativamente bajo para evitar que se nos genere un único cluster, comenzaremos generando un modelo con un mínimo de 10 puntos.

Para la implementación de este modelo se han tomado como referencia las propuestas de soluciones de los compañeros proporcionadas en la asignatura [5].

A continuación se evaluará el número mínimo de puntos necesario para obtener los distintos clusters.

Se observa que obtenemos 3 clusters considerando 8 puntos en la distancia epsilon para considerarlo un cluster y 2 cluster con 9 y 10 puntos como mínimo de puntos. Tras observar esto, emplearemos un mínimo de 9 puntos de ahora en adelante para los modelos con OPTICS, de esta forma reducimos el número de observaciones no asignadas, corriendo el riesgo de aumentar el número de observaciones mal asignadas.

A continuación, vamos a representar el reachability plot de la un modelo OPTICS con un mínimo de 9 puntos.

Como podemos ver, efectivamente, se forman dos grupos pero no como esperábamos, ya que la gran mayoría de los valores aparecen como outliers y solo dos conjuntos entran dentro de un cluster.

A partir del reachability plot observamos que no hay una gran diferenciación entre los valores de un grupo y los otros, esto es debido a que se encontraban formando un gran cluster y los valores de la zona superior correspondían a los diagnosticados como malignos y los de la zona inferior como benignos.

No obstante, lo que estamos observando se puede deducir de este reachability plot es que los tumores que son asignados como benignos son los que generan el valle entre los puntos 100 y 500 aproximadamente, y los tumores malignos son anomalías, que en otro caso se asignarían como outliers, pero en nuestro caso se deben considerar. Estos no generan un único grupo que se agrupe, ya que un tumor maligno no tiene una carácterística propia, a diferencia de los benignos. Por ello en este caso, lo que tenemos que hacer es buscar unos valores que nos permitan encontrar un único cluster (tumores benignos) y un conjunto de outliers (tumores malignos).

Por ello vamos escogeremos un valor mínimo de puntos de 12 que nos generará un único grupo. Se escoge 12 ya que este valor producirá un mayor número de outliers, es decir tumores diagnosticados como malignos, en nuestro caso de estudio será mejor diagnosticar un tumor benigno como maligno y realizar unas pruebas adicionales donde se determine que fue un falso postivo, que no diagnosticar un tumor maligno como benigno y no tratar al paciente. Por ello, se va a tratar en todo momento de quedarnos en el lado de la seguridad y perder un poco de precisión a cambio de evitar falsos negativos.

Con este nuevo valor repetimos el reachability plot.

Se observa que hay varios valores de epsilon que podriamos emplear en función de que agrupaciones consideremos pertenecientes al cluster central. Con un valor de 0.85 tan solo cogeríamos el valle central, descartando una gran parte de los valores por la parte superior. Por lo que quizás deberíamos aumentar este valor con 0.125 englobamos una gran parte del valle central y cogemos el máximo del lateral izquierdo, este será uno de los valores que convendrá probar. Por otro lado con 0.15 estaremos cogiendo casi todo el lateral izquierdo y la gran parte del valle, descartando los valores de la derecha.

A continuación se estudiarán estos dos valores, y se evaluará cual es más apropiado.

4.3. DBSCAN

A partir de los valores de epsilon y minPts obtenidos previamente con el modelo de OPTICS se procede a aplicar un modelo de DBSCAN.

Se observa que al emplear epsilon=0.125, los clusters que nos aparecían a la izquierda son de una zona que se puede confundir entre tumores benignos y malignos, pero con el conocimiento que tenemos de los datos clasificados, decidimos asignarlos a los tumores malignos. Esto también se hace así con el objetivo previamente comentado de minimizar el número de falsos negativos, los cuales tendrían un impacto muy grande en el paciente.

A continuación evaluamos el modelo con epsilon=1.15.

Se observa que con ambos valores de epsilon

Con esto se observa que el grupo 1 parece corresponder al grupo de los tumores benignos, mientras que los outliers (-1) y el grupo 1 se asignarán a los tumores malignos. A pesar de poder reducir la cálidad del modelo resultante estas medidas minimizarán el número de falsos negativos que es lo más importante a la hora de realizar este modelo predictivo.

A continuación, se evaluará la calidad del modelo con ambos valores de epsilon y se tomará una decisión de cual utilizar.

4.4. Evaluación de la calidad del modelo

Para evaluar la calidad del modelo emplearemos Silhouette y el porcentaje de predicciones correctas del modelo. Empezamos evaluando el valor de silhouette para los dos modelos.

Con lo que se obtiene que para el valor de 0.15 estamos perdiendo calidad, aunque esto era de esperar ya que los outliers no se consideran dentro de ningún grupo y, por tanto, con silhouette solo estamos obteniendo una información sobre el grupo de valores asignados como grupo 0 o 1, penalizando el grupo -1. Por ello el valor que será realmente relevante será el de la precisión en la predicción del modelo que se calcula a continuación.

Al evaluar la precisión de los modelos se obtiene que la precisión del modelo con epsilon=0.125 es del 89% mientras que el que emplea epsilon=0.15 es del 78%. Esta disminución de la calidad se hace a base de añadir observaciones malignas al grupo de las benignas, ya que al aumentar epsilon lo que estamos haciendo es aumentar la distancia a la que se pueden encontrar las anomalías para englobarlas en un cluster, que en este caso significa introducirlas como un diagnóstico benigno.

Dado que al considerar una epsilon=0.125 obtenemos una mayor precisión y además minimizamos el número de falsos negativos, este es el valor que tomaremos para epsilon.

Por tanto, tras el trabajo realizado se concluye que los valores a escoger para el modelo generado con DBSCAN deben ser minPts=12 y epsilon=0.125.

4.5. Comparativa con otros métodos

Los modelos basados en densidad a diferencia de los basados en distancia (como k-means) no parten de un número determinado de clústers, sino que los generan a partir de zonas de alta densidad. Esta densidad se la proporcionamos nosotros mediante epsilon y minPts, que determinan cuantos puntos se deben encontrar en un radio determinado para considerarlo un cluster.

Esta definición, ha hecho que el factor de que todos las muestras se congregen en un único cluster hacía difícil detectar la diferencia entre las dos categorías con este modelo y al final se ha acabado detectando que los datos más similares correspondían a los tumores benignos, mientras que cualquier anomalía los acababa situando como outliers y se asignaban al grupo de tumores malignos.

A diferencia de otros modelos basados en distancias, como los del ejercicio 1 y 2 nos ha generado la complicación comentada previamente, no obstante, también nos ha permitido indagar más en las causas de que un tumor termine siendo diagnosticado como maligno, aunque generalización en las anomalías ya se detectó en el ejercicio 2 cuando el modelo con métrica de Chebyshev daba tan buenos resultados, identificando una independencia de los atributos.

No obstante, este modelo, aunque proporciona unos resultados muy buenos con una precisión del 89%, se queda por detrás de los modelos previos que superaban el 93% de precisión. Además generar este modelo escogiendo de forma apropiada los valores de minPts y epsilon es complejo y como se ha observado con un aumento de epsilon a 0.15 la calidad del modelo ha disminuido hasta el 78%, por lo que hay que vigilar con la sensibilidad del modelo a una modificación en estos valores. Esto no sucede con los modelos basados en distancia.

Podríamos concluir que este modelo nos aporta información nueva de los datos, pero con una mayor complejidad y una precisión ligeramente inferior a la obtenida con los modelos basados en distancia.

4.6. Conclusiones

En este ejercicio se ha aplicado un modelo no supervisado de clustering basado en distancia OPTICS y DBSCAN con el objetivo de predecir el diagnóstico de los tumores de pecho de un conjunto de pacientes. Además se ha buscado comparar la eficiencia de este modelo con los modelos no supervisados de clustering basados en distancia empleados previamente como k-means.

Se ha comenzado evaluando los valores apropiados de epsilon mediante un modelo de densidad OPTICS con el cual se ha obtenido una primera conclusión de nuestro conjunto de datos. Se ha observado que a diferencia de como se suelen considerar los outliers, en nuestro caso queríamos detectar una anomalía no distintos grupos de datos, por ello se ha buscado generar un único cluster que englobase las características de los tumores benignos y, a continuación, determinar que los outliers, es decir, aquellas observaciones que el valor de alguno de sus atributos difiera del cluster principal serán clasificados como tumores malignos, lo cual coincide con nuestro conocimiento de estos tumores, además de como se ha mencionado previamente queda contrastado con los resultados encontrados en el ejercicio 2.

De este primer modelo se ha obtenido que el número adecuado de puntos sería 12 y se han dejado dos valores de epsilon (0.125 y 0.15) para evaluarlos en profundidad con DBSCAN. Todo esto siempre teniendo en cuenta nuestro objetivo de minimizar los falsos negativos como se ha mencionado previamente.

Por otro lado se ha evaluado con DBSCAN este conjunto de datos, y se ha acabado concluyendo que un valor de epsilon de 0.125 era el más apropiado ya que reducía el número de falsos negativos y además aumentaba la precisión del modelo, la cual ha terminado siendo del 89%.

5. Ejercicio 4

5.1. Introducción

En este ejercicio se va a generar un modelo de árbol de decisión con el que se obtendrán unas reglas con las que podremos determinar si un tumor se debe clasificar como benigno o maligno.

Además se va a evaluar el modelo obtenido y se van a generar unas matrices de confusión que nos permitirán comprender el tipo de errores que comete el modelo para poder tratarlas.

Finalmente se compararan los resultados con los de otros modelos buscando las ventajas e inconvenientes que este ofrece.

5.2. Generación de un árbol de decisión

Para empezar vamos a generar un árbol de decisión sobre el conjunto de datos df_2 que hasta este momento ha dado muy buenos resultados y contiene unos atributos con sentido físico, lo que nos ayudará a la hora de encontrar las reglas de decisión poder implementarlas y darles un sentido físico.

Primero de todo nos será de gran utilidad conocer el porcentaje de pacientes con un diagnóstico maligno y benigno en nuestro dataset, para poder determinar si la división de los datos en grupos aleatorios es representativo.

A continuación se genera el árbol de decisión.

Con esto ya establecemos que aproximadamente el 63% de las observaciones corresponen a pacientes con tumores beignos.

A continuación, se genera el árbol de decisión.

Como se puede observar se obtiene que el 63,5% de las muestras tienen un diagnóstico benigno, que comparado con el 62,7% del conjunto total nos indica que la muestra escogida es representativa.

A continuación, definimos una función para generar un árbol de decisión de una profundidad determinada.

El árbol de decisión puede tener distintos grados de profundidad, en nuestro caso, puede llegar a ser de 6 grados, al tener 6 variables distintas. A continuación, vamos a evaluar la calidad de este para distintos grados de profundidad tratando de determinar cual es la profundidad óptima tratando de evitar el problema del overfitting.

Se observa como a partir de una profundidad de 2 la precisión del árbol de decisión converge obteniendo unos resultados muy constantes, entorno al 92% de precisión.

Con los datos de entreno obtenemos unos resultados similares, teniendo una predicción muy buena con un solo nivel, y convergiendo a partir de una profundidad de 2 entorno al 97% de precisión.

Se opta por realizar un árbol de decisión con 3 niveles de profundidad para poder obtener un poco más de información.

Además de la versión gráfica, también se muestra a continuación la versión textual del árbol de decisión.

5.3. Reglas de decisión

Con este árbol de decisión podemos extraer las reglas de decisión de nuestro modelo para determinar si un tumor será diagnosticado como maligno o benigno.

Primero de todo hay que destacar que los valores que se van a comentar son normalizados y, por ello, simplemente nos permiten hacernos una idea de la importancia de los atributos. No se han empleado los datos sin normalizar, ya que el dataset utilizado ya venía normalizado desde su descarga y no se tiene acceso a la versión no normalizada de este.

Las reglas de decisión que se han encontrado son:

En resumen, de este árbol de decisión obtenemos que hay dos atributos que nos permiten determinar con una precisión muy elevada si el tumor es maligno o benigno, estos son la peor medición de concave_points y la peor medición de radius, los cuales con los valores mencionados anteriormente, clasifican con una gran precisión el tumor.

5.4. Evaluación de la calidad del modelo

Vamos a evaluar la calidad del modelo creando una curva ROC de este

Como se puede observar la precisión del árbol de decisión es muy buena, generando una curva que alcanza un valor de sensibility muy alto para unos valores de 1 - specificity muy bajos, lo cual genera un área bajo la curva del 88,9% que son unos valores muy elevados.

A continuación se evaluará la matriz de confusión del árbol de decisión.

En la matriz de confusión podemos observar que la precisión del modelo es muy buena, como ya se había observado con la precisión en las predicciones y con las curvas ROC, aunque aquí se vuelve a contrastar observando que tan solo hay un 9% de error. No obstante, estos errores no son tan buenos como podíamos esperar, ya que obtenemos que un 8% del error se debe a falsos negativos, que es la peor predicción que podemos hacer, ya que estaríamos dejando de tratar a un paciente con un tumor maligno, lo cual podría tener unas consecuencias muy graves.

Por ello a continuación se van a estudiar otros modelos que pueden mejorar estos resultados.

5.5. Modelo con Gradient Tree Boosting

El modelo Gradient Tree Boosting es un árbol de decisión que emplea un optimización de tipo boosting que consiste en entrenar árboles de decisión con los resultados obtenidos de otros árboles de decisión, de esta forma conseguimos mejorar la calidad de nuestro modelo. A continuación, se va a implementar un modelo con Gradien Tree Boosting de SciKit learn.

A continuación, evaluaremos la precisión de este modelo para distintas profundidades del árbol de decisión.

Se observa que este modelo obtiene su máxima precisión para una profundidad de 4, donde la precisión supera el 95%, mejorando los resultados que habíamos obtenido con el árbol de decisión inicial que era del 92%.

Por lo tanto, hasta este momento, podemos concluir que este modelo nos proporciona una mayor precisión que el previo, a continuación vamos a evaluar sus curvas ROC en comparativa con con el modelo previo y su matriz de confusión.

Se observa que el área bajo la curva ROC es del 92,7% lo que representa una mejoría con respecto a la obtenida en el modelo anterior que era del 88,9%.

Finalmente, vamos a evaluar la matriz de confusión de este modelo.

Observamos como este modelo tiene una tasa de error inferior al previo, con un error de 5,8%, no obstante, seguimos observando que la mayor parte de los errores se cometen con falsos negativos, que como habíamos comentado previamente, es el error que tenemos que minimizar. No obstante, con este modelo los resultados obtenidos tendrían una mejor calidad.

5.6. Modelo con Random Forest

Finalmente, con el objetivo de tratar de encontrar el mejor modelo posible se opta por realizar un modelo con Random Forest y tratar de comparar sus resultados con los previamente encontrados.

Random Forest realizar un conjunto de árboles de decisión aleatorios y buscará el promedio de sus predicciones mejorando de esta forma el resultado de un árbol de decisión.

A la hora de aplicar el modelo de random forest se debe decidir la profundidad máxima de este, la cual se va a fijar en 3 basándonos en el estudio realizado con los árboles de decisión. Además se fijará el random_state para mejorar la reproducibilidad del código. A continuación vamos a implementarlo.

A continuación vamos a evaluar la cantidad de árboles de decisión necesarios para que el modelo converja y, de esta forma, determinar el valor del número de árboles.

Se observa que para una cantidad a partir de 100 árboles el modelo ya ha convergido con una precisión entorno al 94%, se escogerá como valor para esta variable 200, ya que parece que es donde obtenemos la mayor precisión. A continuación generamos el modelo y lo almacenamos para emplearlo más adelante.

A continuación evaluaremos las curvas ROC del modelo.

Se observa que el área bajo la curva del modelo con Random Forest es del 93,2%, lo cual es aún mejor que los resultados obtenidos para Gradient Tree Boosting model que era del 92,7%. No obstante, todos los modelos están ofreciendo unos resultados muy buenos.

Finalmente, buscaremos la matriz de confusión.

Para random forest observamos que el porcentaje de error es idéntico al encontrado con Gradient Boosting Tree, no obstante, estos resultados son mejores para nuestro proyecto, ya que estamos reduciendo el número de falsos negativos y, en contrapartida, aumentando el número de falsos positivos, los cuales habíamos determinado que no eran tan malos.

Finalmente, podemos concluir que estos resultados son mejores que el árbol de decisión inicial y ligeramente mejor que el modelo obtenido con Gradient Boosting Tree.

5.7. Comparación de los distintos modelos

En este ejercicio se han realizado múltiples modelos empleando 3 algoritmos distintos basados en árboles de decisión que han sido Decision Tree, Gradient Tree Boosting y Random Forest para comparar sus diferencias.

Primero de todo hay que indicar que los tres modelos han ofrecido una calidad extremadamente alta y que la comparativa se va a basar en escoger la mejor opción entre estos, aún sabiendo que todos son buenos.

Decision tree es el modelo que se generará más rápido, ya que excusivamente calculará un árbol de decisión. No obstante, también es el modelo que proporciona los resultados con menor calidad.

A continuación se ha empleado el modelo Gradient Tree Boosting que introduce el Boosting en los árboles de decisión, lo que significa que generá varios modelos de árbol de decisión iterativos aprovechando las conclusiones de uno para mejorar los resultados del siguiente.

Con este modelo se ha observado que la calidad del modelo aumentaba consiguiendo una precisión del 95,2% respecto al 91% del modelo original, además al evaluarlo con las curvas ROC el área bajo la curva ha sido del 92,7% respecto el 88,9% del modelo original. Por tanto se puede concluir que este modelo ha realizado una mejor predicción. Por otro lado, al analizar su matriz de confusión se observa que se ha reducido el número de falsos negativos lo cual es muy importante en este proyecto.

Por otro lado, se ha evaluado un modelo con Random Forests que genera un conjunto de árboles de decisión y obtiene el promedio de los resultados. Con este modelo hemos encontrado unos resultados de precisión ligeramente inferiores a los de Gradient tree Boosting (94,1%), pero mejores resultados en el área bajo la curva ROC, siendo esta del 93,2%. No obstante, lo más importante es que este modelo reduce ligeramente el número de falsos negativos, lo cual es muy importante en este proyecto.

5.8. Conclusiones

En este ejercicio se ha buscado generar un modelo de árbol de decisión que nos proporcionase unas reglas de decisión para nuestro proyecto. Además, de forma complementaría se han generado otros modelos con algoritmos más complejos para tratar de mejorar la calidad del árbol de decisión.

Primero se ha evaluado un model de árbol de decisión empleando el algoritmo de Decision Tree de Scikit Learn, con este se han obtenido unos resultados muy buenos de precisión, siendo ligeramente inferiores a los encontrados con los modelos no supervisados, siendo esta del 91%.

A continuación, se han evaluado las reglas de decisión que nos proporciona el proyecto remarcando la importancia de dos atributos, concavity_points y radius ambas pertenecientes a la lectura worst. Con tan solo estas dos variables el filtrado de los datos era extremadamente bueno. No obstante, el dataset del que se partió en la práctica anterior ya tenía los datos normalizados, por lo que no ha sido posible evaluar los valores reales de estas variables sino tan solo su valor tras la normalización.

Para medir la calidad de este modelo se ha buscado sus curvas ROC y la matriz de confusión, de lo que se han obtenido unos resultados muy satisfactorios como ya era de esperar, encontrando un área bajo la curva del 88,9%. Al analizar la matriz de confusión es donde se ha encontrado el único aspecto negativo (dentro de su calidad extremadamente alta), la mayor parte de los errores en la predicción eran falsos negativos, los cuales nos interesa minimizar en nuestro análisis.

Finalmente, se ha comparado este modelo con otras algoritmos más complejos como Gradient Tree Boosting que introduce el factor del boosting y Random Forest, que genera un conjunto de árboles de decisión y busca su promedio. Con estos se ha encontrado que ambos modelos mejoraban la calidad del árbol de decisión y disminuian el número de falsos negativos, especialmente con Random Forest. Además se ha realizado una comparativa de estos 3 modelos.

6. Ejercicio 5

6.1. Introducción

En este ejercicio se va a generar un modelo supervisado diferente a los anteriores con el objetivo de comparar sus resultados con los modelos supervisados del ejercicio 4.

Entre los distintos modelos supervisados de clustering se ha optado por emplear k-NN, debido a las limitaciones del enunciado que requerían que estuviese incluido en el material docente.

k-NN es un modelo muy sencillo, que se clasifica dentro de los modelos de aprendizaje vagos, ya que no tiene fase de entrenamiento. El modelo consiste en asignar a una muestra la etiqueta mayoritaría de las k muestras vecinas más cercanas.

La desventaja principal de este modelo es su lentitud en la fase de predicción debido a que tiene que encontrar la distancia de la nueva muestra a todos los puntos.

Para un correcto funcionamiento del modelo los atributos deben ser continuos y estar normalizados, lo cual ya tenemos hecho con nuestro conjunto de datos.

Como complemento se puede utilizar un modelo ponderado, weighted k-NN, donde se da más importancia a los vecinos más cercanos.

A continuación vamos a generar un modelo de k-NN y evaluaremos su calidad.

6.2. Modelo k-NN

Generamos los datos de entreno y de test para el modelo [6].

A continuación definimos una función que genere los modelos de k-NN.

El modelo de k-NN requiere que se pase como parámetro el número de vecinos que se tendrán en cuenta, este es un valor que hay que ajustar en función de nuestro modelo, a continuación se va a realizar un estudio de la precisión de las predicciones en función de este valor, con el objetivo de escoger el que nos proporcione la mayor precisión.

Se observa que la precisión del modelo no varia mucho con el número de vecinos, encontrándose su valor entre 91 y 94%, siendo en todos los casos cercana al 93% excepto para 2 vecinos. Con esto se tomará un número de vecinos igual a 7 que es la que nos proporciona la mayor calidad. A continuación se genera el modelo definitivo.

Se observa que la precisión del modelo es muy elevada, siendo uno de los mejores modelos que se han probado hasta el momento.

A continuación, se va a mostrar como separa clasificaría este modelo el total de nuestros datos empleando un pairplot.

Se observa como los resultados obtenidos son los esperados, a continuación se va a realizar un nuevo pairplor pero esta vez identificando los datos mal asignados, para tratar de identificar cuales son las fuentes de error para este algoritmo.

Se observa que los datos que se han asignado de forma incorrecta pertenecen a la zona de transición entre los dos conjuntos, tal y como era de esperar, ya que es en estos valores donde una observación puede tener como vecinos más cercanos observaciones etiquetadas como maligno o como falso.

De estos resultados se concluye que los mejores resultados se obtendrán cuando los clusters este separados y bien diferenciados, al igual que con otro modelos.

6.3. Modelo weighted k-NN

Tratando de ampliar lo solicitado en el ejercicio se opta por aplicar un modelo más complejo que consiste en ponderar los valores de los vecinos más cercanos. Vamos a implementar este modelo adicional con el objetivo de comparar sus resultados con los obtenidos previamente con el modelo k-NN y poder evaluar su eficacia en este proyecto.

Esta variante de k-NN se incluye en el mismo algoritmo que hemos utilizado previamente añadiendo el parámetro weights. A continuación aplicamos esta variación.

Obtenemos el mismo resultado que con el modelo anterior, a continuación mostraremos un gráfico con la precisión en función del número de vecinos para evaluar si este modelo nos ofrece una mayor precisión con otra cantidad de vecinos.

Observamos como el valor para 7 vecinos es idéntico, pero para el resto de vecinos el modelo se comporta mejor o igual que la versión no ponderada.

Por ello, concluimos que la versión ponderada nos da unos valores más precisos que la no ponderada.

6.5. Evaluación de k-NN con diferentes distancias

En este modelo podemos emplear distintas métricas para evaluar la distancia a los vecinos más cercanos, por ello se ha decidido hacer un estudio de cual es la métrica que nos proporcionará los mejores resultados en este proyecto, siguiendo lo estudiado en el ejercicio 2, pero con un modelo supervisado.

A continuación se analizarán los resultados para 4 métricas distintas tratando de ver si se obtienen mejores resultados que en el caso previo. Todos ellos se van a realizar sobre un modelo k-NN ponderado con 6 vecinos. En el modelo previo se empleó la métrica Minkowski que es la que utiliza k-NN por defecto.

Tras analizar las distintas métricas se obtiene que la métrica Minkowski y la Euclidea son las que proporcionan mejores resultados, con exactamente la misma precisión. La métrica Manhattan da unos resultados ligeramente inferiores y Chebyshev es la que proporciona los peores resultados de las estudiadas.

Estos resultados son interesantes, ya que la métrica Chebyshev había resultado ser la mejor por detrás de Chi-square para los modelos no supervisados y la métrica Euclidea había dado unos resultados intermedios.

6.4. Comparación de los modelos

En este ejercicio se han realizado modelos de clasificación utilizando el algoritmo de scikit learn KNeighborsClassifier en su versión estándar y ponderada. Se han obtenido unos resultados ligeramente mejores en la versión ponderada con una precisión del 94,7%.

Con estos resultados se obtiene que este modelo es que nos ha proporcionado una mayor precisión de los modelos supervisados, comparado con el 93,2% obtenido con el modelo de Random Forests, que era el mejor hasta el momento.

No obstante este modelo sabemos que puede ser complejo cuando aumentemos el número de muestras ya que al tener que calcular la distancia de cada muestra que queramos predecir a todas las muestras del dataset esto hará que en datasets muy grandes cualquier predicción sea muy costosa, mientras que con los modelos previos será muy sencillo generar una predicción ya que como habíamos visto tan solo deberemos evaluar 3 o 4 atributos para poder clasificar una observación.

Por otro lado, este modelo tiene una gran desventaja en comparación con los árboles de decisión y es que estos nos proporcionan unas reglas de decisión que nos aportan mucha información respecto nuestro conjunto de datos, mientras que con k-NN no obtenemos más información del conjunto de datos.

6.5. Conclusiones

En este apartado se ha evaluado un modelo supervisado de clasificación distinto al empleado en el ejercicio 4. Se ha optado por estudiar un modelo k-NN.

Primero se ha evaluado el modelo estándar del cual se han obtenido muy buenos resultados con una precisión del 94,1%, mejorando los datos de los modelos previos. Se ha decidido evaluar que datos son los que nos pueden generar errores a la hora de clasificar un dato y se ha observado que son aquellos que se encuentran en la frontera entre dos clusters, como suele pasar en la mayoría de modelo de clasificación.

A continuación se ha tratado de mejorar los datos obtenidos, primero utilizando un modelo ponderado en el que se da una mayor importancia a los vecinos más cercanos, con esto hemos conseguido aumentar la precisión del modelo hasta el 94,7%. Finalmente, se ha tratado de evaluar la influencia de la métrica, tratando de mejorar un poco más la precisión del modelo al igual que se hizo en el ejercicio 2, y se ha observado que tanto la métrica Minkowski (empleada por defecto en este modelo) como la Euclidea son las que proporcionan los mejores resultados.

Finalmente, se han comparado los resultados obtenidos en este ejercicio con los obtenidos en el ejercicio anterior y se observa que los modelos basados en árboles de decisión tienen una menor precisión que k-NN pero a cambio nos proporcionan unas reglas de decisión que pueden ser empleadas más adelante para dar un sentido físico a los datos y además en caso de tratar con un conjunto de datos grande, puede ser costoso generar el modelo pero no lo serán las predicciones, al revés que con k-NN.

7. Ejercicio 6

7.1. Limitaciones del dataset

El dataset sobre el que se ha trabajado contenía datos de distintos parámetros de tumores de pacientes que posteriormente fueron diagnosticados como malignos o benignos.

Por un lado uno de los problemas con los que nos hemos encontrado es que el dataset ya proporcionaba los datos normalizados, por lo que no tenemos una perspectiva de las magnitudes reales de estas variables, lo cual no es un problema a la hora de evaluar los datos de un paciente con un modelo no supervisado, pero si que lo será a la hora de aplicar un modelo supervisado, ya que las reglas obtenidas en un árbol de decisión o las posiciones en k-NN no serán validas. Lo único que será práctico de un árbol de decisión será la evaluación que hace de cuales son los atributos que tienen una mayor influencia a la hora de determinar el diagnóstico de un paciente.

Se ha encontrado que el dataset no contenía ningún tipo de información al respecto del paciente como edad o factores de riesgo que podrían ayudarnos a extraer información adicional de este dataset.

Por otro lado, el dataset presentaba 3 conjuntos de datos. Los pacientes estudiados tenían múltiples tumores, de estos se tomo la lectura promedio mean, la peor worst y el error estándar se. Tras estudiarlas se ha observado que los datos mean y worst son redundantes y se podría haber prescindido de ellos, no obstante esta tarea se ha acabado realizando en el preprocesado de los datos, al igual que otros atributos que no aportaban mucha información.

Finalmente, la longitud del dataset era de 569 muestras, el cual es correcto, pero sería conveniente que fuese mayor para así poder obtener unos resultados más solidos.

A pesar de estas limitaciones se han obtenidos unas predicciones muy buenas que en la mayoría de los modelos excedían el 90%.

7.2. Riesgos de uso

Los modelos encontrados conllevan un riesgo de uso asociado ya que en este caso se estarían aplicando para el diagnóstico de tumores en pacientes que pueden sufrir cáncer.

Es muy importante ser conscientes que estos modelos son una herramienta muy útil para que el personal especializado pueda determinar que pacientes requieren de unos estudios en mayor profundidad o tienen un riesgo superior al resto a ser diagnosticados con un cáncer, no obstante, siempre debe ser un profesional quien sabiendo que ese paciente tiene un riesgo alto o bajo de tener un diagnóstico negativo estudie el caso y obtenga las conclusiones finales.

Por otro lado, a la hora de clasificar una observación podemos cometer dos tipos de error un falso positivo, o un falso negativo. Como se ha mencionado anteriormente, un falso positivo no tiene una gran gravedad ya que en ese caso el médico realizará unas pruebas complementarias para contrarestar los resultados e identificará que fue un falso positivo. No obstante un falso negativo, podría conllevar que no se detecte un tumor maligno en un paciente enfermo y que no se actué a tiempo, cuando se sabe que en el caso del cáncer lo mejor es identificarlos en las fases iniciales. Por ello, una mejora en estos modelos debería ir en la línea de reducir el número de falsos negativos.

Finalmente, es importante remarcar, que aunque este modelo conlleve unos riesgos, también puede suceder que este procesamiento de los datos, si se realiza a partir de pruebas sencillas y económicas termine permitiendo identificar una cantidad muy elevada de pacientes de riesgo que posteriormente reciban unas pruebas más complejas para identificar a pacientes con cáncer. Por ello, conlleva unos riesgos que pueden ser contrarestados al poder tratar a un número muy superior de pacientes optimizando los recursos médicos o permitiendo el acceso a ellos en paises con menos recursos.

8. Bibliografia

[1] pyclustering.cluster.kmeans.kmeans Class Reference. (s. f.). Pyclustering. Recuperado 11 de enero de 2022, de https://pyclustering.github.io/docs/0.9.0/html/da/d22/classpyclustering_1_1cluster_1_1kmeans- _1_1kmeans.html#a24cb16d166a249735bd89c6448182224

[2] pyclustering.utils.metric.type_metric Class Reference. (s. f.). Pyclustering. Recuperado 11 de enero de 2022, de https://pyclustering.github.io/docs/0.8.2/html/da/d3a/classpyclustering_1_1utils_1_1metric_1- _1type__metric.html

[3] CHILLAR, A. (2020, 26 noviembre). KMeans Clustering using different distance metrics. Kaggle. https://www.kaggle.com/arushchillar/kmeans-clustering-using-different-distance-metrics

[4] Distance Metrics Overview. (s. f.). Improved Outcomes. Recuperado 11 de enero de 2022, de http://www.improvedoutcomes.com/docs/WebSiteDocs/Clustering/Clustering_Parameters/Distance_- Metrics_Overview.htm

[5] Martinez, M. (2021). PEC 2 Minería de datos.

[6] sklearn.neighbors.KNeighborsClassifier. (s. f.). Scikit-Learn. Recuperado 12 de enero de 2022, de https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html#sklearn.-neighbors.KNeighborsClassifier.score